<chapter xml:id="general-structure">
<title>General structure and usage</title>

<p>The topmost structural units of the library are headers and the library file
(or archive) - <tt>lib__vic.a</tt> or <tt>__vic.lib</tt>. Usually the library
file has some suffix like <tt>lib__vic14.a</tt>. All the headers
are located in the <tt>__vic/</tt> subdirectory. One should include them like
this:</p>

<code-block lang="C++">
#include &lt;__vic/<nt>header.h</nt>>
</code-block>

<p>Where <tt><nt>header.h</nt></tt> is a name of the desired header.</p>

<p>Almost all the code is placed within <tt>__vic</tt> namespace, including
other namespaces.</p>

<p>During program linking, the library file must be given to the linker.
Example:</p>

<tty>
$ g++ -std=c++14 prog.cpp -l__vic14
</tty>

<p>The library can be built using one of the ISO C++ standards: C++98, C++11,
C++14, C++17, C++20 or C++23. The standard suffix is used as a suffix for the
library file (archive).</p>

<p>Some features require a specific minimal standard version to be available,
e.g. many of them require at least C++11. These features are marked with
<badge>C++11</badge> badge that means "C++11 or later".</p>

<p>Some features are available only in particular standard mode and not
available otherwise. Such features are marked with <badge>C++98 only</badge>
badge.</p>

<p>Detailed description of the library components is provided in the subsequent
chapters. Descriptions are grouped by headers. C++23 language syntax is mainly
used as a more complete and expressive one.</p>

</chapter>
